/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.documentar.interfacee;

import javax.swing.DefaultComboBoxModel;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Santos
 */
/**
 * Interface generica que define o padrão de assinatura dos metodos que as
 * classe irão implementar. Sendo que essa interface, apenas as Classes do
 * pacote de controller irão implementa-lá, pois são metodos especificos para
 * essa camada do MVC
 *
 * @author Santos
 * @param <ClasseModel> Classe Model que será utilizada
 */
public interface InterfaceController<ClasseModel> {

    /**
     * Metodo resposável por retornar um novo Model
     *
     * @return Model da classe
     */
    public ClasseModel getModel();

    /**
     * Metodo responsável por fazer a insersão dos dados na TableModel
     *
     * @param model Classe Model que será utilizada
     * @return DefaultTableModel com os dados
     */
    public DefaultTableModel insertTableModel(ClasseModel model);

    /**
     * Metodo responsável por retornar o TableModel com os dados da classe que
     * está trabalhando
     *
     * @param model Classe Model que será utilizada
     * @return DefaultTableModel com os dados
     */
    public DefaultTableModel getDadosTableModel(ClasseModel model);

    /**
     * Metodo pela gravação dos dados no banco de dados
     *
     * @param model Classe Model que será utilizada
     * @return Verdadeiro - Operação concluída com sucesso. Falso - Operação não
     * foi concluída com sucesso
     */
    public boolean setDados(ClasseModel model);

    /**
     * Metodo responsável por retornar o ComboBoxModel com os dados da classe
     * que está trabalhando
     *
     * @param model Classe Model que será utilizada
     * @return DefaultComboBoxModel com dos dados
     */
    public DefaultComboBoxModel getDadosComboBoxModel(ClasseModel model);

    /**
     * Metodo responsável por fazer a insersão dos dados na ComboBoxModel
     *
     * @param model Classe Model que será utilizada
     * @return DefaultComboBoxModel com dos dados
     */
    public DefaultComboBoxModel insertComboBoxModel(ClasseModel model);

}
